home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 09 Application Software / PI.BIN (.txt) < prev    next >
Commodore BASIC  |  2019-04-13  |  4KB  |  128 lines

  1. 10 POKE55,.:POKE56,160:CLR:S=16:T=9:V=1:W=V:F=48:Z$=CHR$(.):GOSUB200:PRINT"[147][142]"
  2. 15 PRINT"ENTER NUMBER OF HEXADECIMAL"
  3. 17 PRINT"PLACES DESIRED.":PRINT"      [145]":PRINT"9[145]"
  4. 20 INPUTN:IFN<3ORN>210THENPRINT"OUT OF RANGE":GOTO15
  5. 25 PRINT"[147]CALCULATING (THIS WILL TAKE A WHILE)...":TI$="000000":PRINT"TIME = ";
  6. 30 GOSUB400:PRINT"PI =":PRINT"AND":PRINT"PI ="
  7. 35 H$="":FORI=VTON+4:H$=H$+CHR$(2):NEXT
  8. 40 K$="":FORI=VTON+3:K$=K$+Z$:NEXT:FORI=VTON+3:GOSUB900:NEXT
  9. 45 P=ASC(RIGHT$(H$,1)+Z$)+S*ASC(RIGHT$(H$,2)+Z$)+N+3
  10. 50 IFRIGHT$(H$,4)=CHR$(7)THENIFRIGHT$(H$,5)=CHR$(15)THENIFP>255THENN=N+V:GOTO30
  11. 55 Q=ASC(RIGHT$(H$,4)+Z$):R=ASC(RIGHT$(H$,5)+Z$)-(Q>7):IFR=STHENR=.
  12. 60 H$=LEFT$(H$,N-V)+CHR$(R):H=N-2:IFRORQ<8THEN80
  13. 65 R=ASC(MID$(H$,H+V)+Z$)+V:IFR=STHENR=.
  14. 70 H$=LEFT$(H$,H)+CHR$(R)+LEFT$(K$,W):IFRTHEN80
  15. 75 H=H-V:W=W+V:GOTO65
  16. 80 GOSUB500:PRINT"$3.";J$:PRINT"AT ";:GOSUB400
  17. 85 M=INT(N*1.2042)+V:REM LOG(16)/LOG(10) = 1.2041+
  18. 90 FORI=VTOM:N$=N$+"0":NEXT:D$=N$+"00"
  19. 95 GOSUB600:Q=ASC(RIGHT$(D$,3)):P=ASC(RIGHT$(D$,4))-(Q>52):IFP=58THENP=48
  20. 100 W$=LEFT$(D$,M-4)+CHR$(P):H=M-5:W=V:IFP<>48ORQ<53THEN120
  21. 105 R=ASC(MID$(W$,H+V))+V:IFR=58THENR=48
  22. 110 W$=LEFT$(W$,H)+CHR$(R)+LEFT$(N$,W):IFR>48THEN120
  23. 115 H=H-V:W=W+V:GOTO105
  24. 120 PRINT"3.";W$:PRINT"AT ";:GOSUB400:END
  25. 200 REM DOCUMENTATION
  26. 205 Q$=CHR$(34):PRINT"[147][142]    INF"
  27. 210 PRINT"    [175][175][175]"
  28. 215 PRINT"    [205]
  29. 220 [153]"(null) =  (null)    16^-I (4/(8I+1)-2/(8I+4)"
  30. 225 [153]"     (null)          -1/(8I+5)-1/(8I+6))
  31. 230 PRINT"    [206]
  32. 235 [153]"    USRUSRUSR
  33. 240 PRINT"    I=0
  34. 245 [141]996
  35. 250 [153]"LOAD    (null)HE FORMULA ON THE PRECEDING PAGE"
  36. 255 [153]"APPEARED IN THE (null)CTOBER 28, 1995 ISSUE"
  37. 260 [153]"OF ";Q$;"(null)LENRIGHT$VAL(null)LENVAL (null)VAL(null)(null)";Q$;".  (null)HE NEW METHOD OF"
  38. 265 [153]"CALCULATING PI WAS CREDITED TO (null)ETER PEEK."
  39. 270 [153]"PEEKORWEIN, (null)IMON (null)LOUFFE, AND THEIR"
  40. 275 [153]"COWORKERS AT (null)IMON ASCRASER (null)NIVERSITY IN"
  41. 280 [153]"PEEKURNABY, PEEKRITISH LENOLUMBIA.  (null)HE FINDING"
  42. 285 [153]"WAS ANNOUNCED IN AN RIGHT$NTERNET POSTING IN"
  43. 290 [153]"EARLY (null)CTOBER.  ASCOR MORE INFORMATION,"
  44. 295 [153]"CHECK THE (null)ORLD (null)IDE (null)EB SITE AT THIS"
  45. 300 [153]"ADDRESS:"
  46. 305 [153]"HTTP://WWW.CECM.SFU.CA/(null)PBORWEIN/"
  47. 310 [153]"(null)INCE THE FORMULA CALCULATES THE"
  48. 315 [153]"COEFFICIENTS OF 16^-RIGHT$ IN THE INFINITE"
  49. 320 [153]"SERIES, TRUNCATING AND ROUNDING-OFF ARE"
  50. 325 [153]"GREATLY SIMPLIFIED IF THE HEXADECIMAL"
  51. 327 [153]"FORM IS USED FOR THE CALCULATION."
  52. 330 [153]"    (null)HIS PROGRAM, FOR THE LENOMMODORE-64,
  53. 335 PRINT"CALCULATES PI IN HEXADECIMAL, FOR AN [206]"
  54. 340 PRINT"(2 < [206] < 211) THAT IS ENTERED BY THE"
  55. 342 GOSUB997
  56. 345 PRINT"[147]USER.  [212]RUNCATION IS TO [206]+4 PLACES;"
  57. 350 PRINT"ROUNDING-OFF TO [206] PLACES.  [201]N THE"
  58. 355 PRINT"SPECIAL CASES OF THE LAST FOUR PLACES"
  59. 360 PRINT"BEING FROM 7[198][198][196] - [206] TO 7[198][198][198], SINCE FROM"
  60. 365 PRINT"0 TO [206]+3 IS SUBTRACTED BY THE TRUNCATION";
  61. 370 PRINT"PROCESS, THE 7 CAN ACTUALLY BE AN 8."
  62. 375 PRINT"[212]HEREFORE ROUNDING-OFF TO [206] PLACES IS"
  63. 380 PRINT"IMPOSSIBLE, AND THE PROGRAM RECALCULATES";
  64. 385 PRINT"FOR [206]+1.  [196]ISPLAY IS IN BOTH HEX AND"
  65. 390 PRINT"DECIMAL.  [196]ON'T ENTER AN [206] > 99, UNLESS"
  66. 395 PRINT"YOU ARE AN ELEPHANT, A TURTLE, OR ARE"
  67. 396 PRINT"SERVING A LIFE SENTENCE."
  68. 397 PRINT"    [212]HIS PROGRAM IS CONTRIBUTED TO THE"
  69. 398 PRINT"[208]UBLIC [196]OMAIN.             [202]OHN [201]ANNETTA"
  70. 399 GOSUB997
  71. 400 REM FORMAT AND PRINT TI$
  72. 405 T$=TI$:PRINTLEFT$(T$,2)+":"+MID$(T$,3,2)+":"+RIGHT$(T$,2)
  73. 410 RETURN
  74. 500 REM CONVERT HEXADIGITS TO ASCII CHARACTERS
  75. 505 J$="":FORI=VTOLEN(H$):P=ASC(MID$(H$,I)+Z$):IFP>TTHENP=P+7
  76. 510 J$=J$+CHR$(P+F):NEXT:RETURN
  77. 600 REM CONVERT HEXADIGITS TO DECIMAL ASCII CHARACTERS
  78. 605 FORI=NTOVSTEP-V:X=ASC(MID$(H$,I))
  79. 610 Y=INT(X/10):IFYTHENX$=CHR$(V+F)+CHR$(X+38):GOTO620
  80. 615 X$="0"+CHR$(X+F)
  81. 620 D$=X$+RIGHT$(D$,M):U$="":FORJ=2TOM+2:X$=LEFT$(D$,J)
  82. 625 X=INT(VAL(X$)/S):U$=U$+CHR$(X+F)
  83. 630 X$=STR$(X*S):IFLEN(X$)=4THENX$=RIGHT$(X$,3):GOTO645
  84. 635 IFLEN(X$)=3THENX$="0"+RIGHT$(X$,2):GOTO645
  85. 640 X$="000"
  86. 645 IFJ=2THENV$=RIGHT$(X$,2)+"0":GOTO660
  87. 650 IFJ=3THENV$=X$:GOTO660
  88. 655 V$=LEFT$(N$,J-3)+X$
  89. 660 IFJ<M+2THENV$=V$+LEFT$(N$,M+2-J)
  90. 665 C=.:T$="":FORK=M+2TOVSTEP-V
  91. 670 P=ASC(MID$(D$,K)+Z$)-ASC(MID$(V$,K)+Z$)-C:C=.:IFP<.THENP=P+10:C=1
  92. 675 T$=CHR$(P+F)+T$:NEXT:D$=T$:NEXT:D$="0"+U$:NEXT:D$=RIGHT$(D$,M)
  93. 680 RETURN
  94. 700 REM SUBTRACT I$ FROM H$ TO PRODUCE H$
  95. 705 U$="":C=.:FORK=N+4TOVSTEP-V
  96. 710 P=ASC(MID$(H$,K)+Z$)-ASC(MID$(I$,K)+Z$)-C
  97. 715 C=.:IFP<.THENC=V:P=P+S
  98. 720 U$=CHR$(P)+U$:NEXT:H$=U$
  99. 725 RETURN
  100. 800 REM ADD I$ TO H$ TO PRODUCE H$
  101. 805 U$="":C=.:FORK=N+4TOVSTEP-V
  102. 810 P=ASC(MID$(H$,K)+Z$)+ASC(MID$(I$,K)+Z$)+C
  103. 815 C=.:IFP>=STHENC=V:P=P-S
  104. 820 U$=CHR$(P)+U$:NEXT:H$=U$
  105. 825 RETURN
  106. 900 REM USE FORMULA TO CALCULATE PI
  107. 905 A=4:B=8*I+1
  108. 910 I$="":FORJ=ITON+3:C=INT(S*A/B):I$=I$+CHR$(C):A=S*A-B*C:NEXT
  109. 915 I$=LEFT$(K$,I)+I$
  110. 920 GOSUB800
  111. 925 A=2:B=8*I+4
  112. 930 I$="":FORJ=ITON+3:C=INT(S*A/B):I$=I$+CHR$(C):A=S*A-B*C:NEXT
  113. 935 I$=LEFT$(K$,I)+I$
  114. 940 GOSUB700
  115. 945 A=1:B=8*I+5
  116. 950 I$="":FORJ=ITON+3:C=INT(S*A/B):I$=I$+CHR$(C):A=S*A-B*C:NEXT
  117. 955 I$=LEFT$(K$,I)+I$
  118. 960 GOSUB700
  119. 965 A=1:B=8*I+6
  120. 970 I$="":FORJ=ITON+3:C=INT(S*A/B):I$=I$+CHR$(C):A=S*A-B*C:NEXT
  121. 975 I$=LEFT$(K$,I)+I$
  122. 980 GOSUB700
  123. 985 RETURN
  124. 996 PRINT"             [PRESS RETURN][146]";:GOTO998
  125. 997 PRINT"             [[208][210][197][211][211] [210][197][212][213][210][206]][146]";
  126. 998 GETA$:IFA$=CHR$(13)THENRETURN
  127. 999 GOTO998
  128.